This invention relates generally to a method for conserving memory space during processor operations, and more specifically to a method for conserving memory storage in an audio signal processor using a pool of short term memory registers.
Typically, processors use memory registers to store data and program instructions. Upon receiving a command to execute a particular program, instructions needed to execute the program's steps are retrieved from memory. Stored data which is to be processed is retrieved from memory. Once processed, the data may be stored in available memory registers for subsequent processing or output.
During conventional processing, the executing program takes control of those registers which supply or store data in response to the program's instructions. Control of the registers typically lasts for the duration of the program to ensure proper program execution. Program control of these registers and is necessary since, in many cases, the previously processed data is required in some subsequent steps.
Unfortunately, the consequence of program control over the memory registers is their removal from the processor's available memory. As can be imagined, the execution of a large program which processes a large amount of data or the concurrently execution of a number of smaller programs could very easily result in a shortage of memory and abrupt program termination.
It is known, however, that not all processed data have the same "lifetimes," i.e. the periods over which the data is required for program execution. For example, in a processor which executes X program instructions for each sample period, some processor operations will require data over multiple sample periods, while other operations will complete data processing within one sample period. In the latter instance, the allocation of short term data to a memory register for a period longer than one sample period is inefficient since the program only requires the data for a very short period of time.
What is therefore needed is a method for conserving memory registers during program execution which avoids inefficiently allocating memory registers to data which is only temporarily required.